package com.one.group.admin.tenant;

import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.convert.Convert;
import com.mybatisflex.core.tenant.TenantFactory;
import lombok.extern.slf4j.Slf4j;

/**
 * {@code @Create:} 2025-09-28 15 : 18
 * {@code @Author:} Cherry
 * {@code @ToUser:} 凡是发生,皆有利于我。
 * ------------------------------------
 * {@code @note:}
 */
@Slf4j
@SuppressWarnings({ "all" })
public class MyTenantFactory implements TenantFactory {
    @Override
    public Object[] getTenantIds() {
        try {
            // 检查SaToken上下文是否可用
            if (StpUtil.isLogin()) {
                // 获取 tenant_id
                Object tenantIdObj = StpUtil.getExtra("tenant_id");
                if (tenantIdObj != null) {
                    Long tenant_id = Convert.toLong(tenantIdObj);
                    log.debug("获取到租户ID: {}", tenant_id);
                    return new Object[] { tenant_id };
                } else {
                    log.warn("租户ID未设置，使用默认租户ID: 1");
                    return new Object[] { 1L }; // 默认租户ID为1
                }
            } else {
                log.warn("用户未登录，使用默认租户ID: 1");
                return new Object[] { 1L }; // 默认租户ID为1
            }
        } catch (Exception e) {
            // 如果SaToken上下文未初始化或其他异常，则返回默认租户ID
            log.warn("SaToken上下文异常: {}，使用默认租户ID: 1", e.getMessage());
            return new Object[] { 1L }; // 默认租户ID为1
        }
    }
}